package org.hilo.boot.core;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.context.annotation.Import;

/**
 * 原生的org.mybatis.spring.annotation.MapperScan有一个配置项为：
 * Class<?> markerInterface() default Class.class;
 * 
 * MapperScanExt这个类升级了这个配置项为：
 * Class<?>[] markerInterface() default {};
 * 
 * 其作用为：可以指定启动时扫描的mapper接口（如果不指定则会扫描package下面的所有类）
 * 有时候package下面可能不止mapper，还有其他类，这时用MapperScan扫描会出错。换成MapperScanExt就可以了。
 * 注意，这个类很久没用了，不知道有没有问题。。。
 * 
 * Use this annotation to register MyBatis mapper extends interfaces when using Java
 * Config. See {@link MapperScannerRegistrar}.
 *
 * @author zollty
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import({org.mybatis.spring.annotation.MapperScannerRegistrar.class, MapperScannerRegistrar.class})
public @interface MapperScanExt {

  /**
   * Alias for the {@link #markerInterface()} attribute. Allows for more concise
   * annotation declarations e.g.:
   */
  Class<?>[] value() default {};

  /**
   * 指定启动时扫描的mapper接口（如果不指定则会扫描package下面的所有类）
   * This property specifies the parent that the scanner will search for.
   * <p>
   * The scanner will register all interfaces in the base package that also have
   * the specified interface class as a parent.
   */
  Class<?>[] markerInterface() default {};

}
